Autogenerated HTML docs for v2.44.0-568-g436d4 
diff --git a/MyFirstContribution.html b/MyFirstContribution.html index 5577d96..4e84b3f 100644 --- a/MyFirstContribution.html +++ b/MyFirstContribution.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>My First Contribution to the Git Project</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div class="sect1">  
diff --git a/MyFirstObjectWalk.html b/MyFirstObjectWalk.html index c0272f5..6f10705 100644 --- a/MyFirstObjectWalk.html +++ b/MyFirstObjectWalk.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>My First Object Walk</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div class="sect1">  
diff --git a/RelNotes/2.45.0.txt b/RelNotes/2.45.0.txt index a65205c..3b6eba5 100644 --- a/RelNotes/2.45.0.txt +++ b/RelNotes/2.45.0.txt 
@@ -335,6 +335,9 @@  call advise() after checking advice_enabled().  (merge 6412d01527 rj/use-adv-if-enabled later to maint).   + * Another "set -u" fix for the bash prompt (in contrib/) script. + (merge d7805bc743 vs/complete-with-set-u-fix later to maint). +  * Other code cleanup, docfix, build fix, etc.  (merge f0e578c69c rs/use-xstrncmpz later to maint).  (merge 83e6eb7d7a ba/credential-test-clean-fix later to maint). @@ -359,3 +362,4 @@  (merge 86f9ce7dd6 bl/doc-config-fixes later to maint).  (merge 0d527842b7 az/grep-group-error-message-update later to maint).  (merge 7c43bdf07b rs/strbuf-expand-bad-format later to maint). + (merge 8b68b48d5c ds/typofix-core-config-doc later to maint). 
diff --git a/ReviewingGuidelines.html b/ReviewingGuidelines.html index 17da6d0..b001e23 100644 --- a/ReviewingGuidelines.html +++ b/ReviewingGuidelines.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Reviewing Patches in the Git Project</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div class="sect1">  
diff --git a/SubmittingPatches.html b/SubmittingPatches.html index 61ac18b..71be867 100644 --- a/SubmittingPatches.html +++ b/SubmittingPatches.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Submitting Patches</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div class="sect1">  
diff --git a/ToolsForGit.html b/ToolsForGit.html index 05a74d3..77dcc3a 100644 --- a/ToolsForGit.html +++ b/ToolsForGit.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Tools for developing Git</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div class="sect1">  
diff --git a/everyday.html b/everyday.html index 8195921..70a2188 100644 --- a/everyday.html +++ b/everyday.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Everyday Git With 20 Commands Or So</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/git-config.html b/git-config.html index e29d8bf..5b951c7 100644 --- a/git-config.html +++ b/git-config.html 
@@ -4573,7 +4573,7 @@  will not overwrite existing objects.   </p>   <div class="paragraph"><p>On some file system/operating system combinations, this is unreliable.  -Set this config setting to <em>rename</em> there; However, This will remove the  +Set this config setting to <em>rename</em> there; however, this will remove the   check that makes sure that existing object files will not get overwritten.</p></div>   </dd>   <dt class="hdlist1">  
diff --git a/git-remote-helpers.html b/git-remote-helpers.html index 799f341..c86f886 100644 --- a/git-remote-helpers.html +++ b/git-remote-helpers.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>git-remote-helpers</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/git-update-ref.html b/git-update-ref.html index 6a2c094..da088fc 100644 --- a/git-update-ref.html +++ b/git-update-ref.html 
@@ -749,7 +749,7 @@  <h2 id="_synopsis">SYNOPSIS</h2>   <div class="sectionbody">   <div class="verseblock">  -<pre class="content"><em>git update-ref</em> [-m &lt;reason&gt;] [--no-deref] (-d &lt;ref&gt; [&lt;oldvalue&gt;] | [--create-reflog] &lt;ref&gt; &lt;newvalue&gt; [&lt;oldvalue&gt;] | --stdin [-z])</pre>  +<pre class="content"><em>git update-ref</em> [-m &lt;reason&gt;] [--no-deref] (-d &lt;ref&gt; [&lt;old-oid&gt;] | [--create-reflog] &lt;ref&gt; &lt;new-oid&gt; [&lt;old-oid&gt;] | --stdin [-z])</pre>   <div class="attribution">   </div></div>   </div>  @@ -757,16 +757,16 @@  <div class="sect1">   <h2 id="_description">DESCRIPTION</h2>   <div class="sectionbody">  -<div class="paragraph"><p>Given two arguments, stores the &lt;newvalue&gt; in the &lt;ref&gt;, possibly  +<div class="paragraph"><p>Given two arguments, stores the &lt;new-oid&gt; in the &lt;ref&gt;, possibly   dereferencing the symbolic refs. E.g. <code>git update-ref HEAD  -&lt;newvalue&gt;</code> updates the current branch head to the new object.</p></div>  -<div class="paragraph"><p>Given three arguments, stores the &lt;newvalue&gt; in the &lt;ref&gt;,  +&lt;new-oid&gt;</code> updates the current branch head to the new object.</p></div>  +<div class="paragraph"><p>Given three arguments, stores the &lt;new-oid&gt; in the &lt;ref&gt;,   possibly dereferencing the symbolic refs, after verifying that  -the current value of the &lt;ref&gt; matches &lt;oldvalue&gt;.  -E.g. <code>git update-ref refs/heads/master &lt;newvalue&gt; &lt;oldvalue&gt;</code>  -updates the master branch head to &lt;newvalue&gt; only if its current  -value is &lt;oldvalue&gt;. You can specify 40 "0" or an empty string  -as &lt;oldvalue&gt; to make sure that the ref you are creating does  +the current value of the &lt;ref&gt; matches &lt;old-oid&gt;.  +E.g. <code>git update-ref refs/heads/master &lt;new-oid&gt; &lt;old-oid&gt;</code>  +updates the master branch head to &lt;new-oid&gt; only if its current  +value is &lt;old-oid&gt;. You can specify 40 "0" or an empty string  +as &lt;old-oid&gt; to make sure that the ref you are creating does   not exist.</p></div>   <div class="paragraph"><p>It also allows a "ref" file to be a symbolic pointer to another   ref file by starting with the four-byte header sequence of  @@ -797,15 +797,15 @@  ref symlink to some other tree, if you have copied a whole   archive by creating a symlink tree).</p></div>   <div class="paragraph"><p>With <code>-d</code> flag, it deletes the named &lt;ref&gt; after verifying it  -still contains &lt;oldvalue&gt;.</p></div>  +still contains &lt;old-oid&gt;.</p></div>   <div class="paragraph"><p>With <code>--stdin</code>, update-ref reads instructions from standard input and   performs all modifications together. Specify commands of the form:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>update SP &lt;ref&gt; SP &lt;newvalue&gt; [SP &lt;oldvalue&gt;] LF  -create SP &lt;ref&gt; SP &lt;newvalue&gt; LF  -delete SP &lt;ref&gt; [SP &lt;oldvalue&gt;] LF  -verify SP &lt;ref&gt; [SP &lt;oldvalue&gt;] LF  +<pre><code>update SP &lt;ref&gt; SP &lt;new-oid&gt; [SP &lt;old-oid&gt;] LF  +create SP &lt;ref&gt; SP &lt;new-oid&gt; LF  +delete SP &lt;ref&gt; [SP &lt;old-oid&gt;] LF  +verify SP &lt;ref&gt; [SP &lt;old-oid&gt;] LF   option SP &lt;opt&gt; LF   start LF   prepare LF  @@ -822,10 +822,10 @@  quoting:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>update SP &lt;ref&gt; NUL &lt;newvalue&gt; NUL [&lt;oldvalue&gt;] NUL  -create SP &lt;ref&gt; NUL &lt;newvalue&gt; NUL  -delete SP &lt;ref&gt; NUL [&lt;oldvalue&gt;] NUL  -verify SP &lt;ref&gt; NUL [&lt;oldvalue&gt;] NUL  +<pre><code>update SP &lt;ref&gt; NUL &lt;new-oid&gt; NUL [&lt;old-oid&gt;] NUL  +create SP &lt;ref&gt; NUL &lt;new-oid&gt; NUL  +delete SP &lt;ref&gt; NUL [&lt;old-oid&gt;] NUL  +verify SP &lt;ref&gt; NUL [&lt;old-oid&gt;] NUL   option SP &lt;opt&gt; NUL   start NUL   prepare NUL  @@ -843,9 +843,9 @@  </dt>   <dd>   <p>  - Set &lt;ref&gt; to &lt;newvalue&gt; after verifying &lt;oldvalue&gt;, if given.  - Specify a zero &lt;newvalue&gt; to ensure the ref does not exist  - after the update and/or a zero &lt;oldvalue&gt; to make sure the  + Set &lt;ref&gt; to &lt;new-oid&gt; after verifying &lt;old-oid&gt;, if given.  + Specify a zero &lt;new-oid&gt; to ensure the ref does not exist  + after the update and/or a zero &lt;old-oid&gt; to make sure the   ref does not exist before the update.   </p>   </dd>  @@ -854,8 +854,8 @@  </dt>   <dd>   <p>  - Create &lt;ref&gt; with &lt;newvalue&gt; after verifying it does not  - exist. The given &lt;newvalue&gt; may not be zero.  + Create &lt;ref&gt; with &lt;new-oid&gt; after verifying it does not  + exist. The given &lt;new-oid&gt; may not be zero.   </p>   </dd>   <dt class="hdlist1">  @@ -863,8 +863,8 @@  </dt>   <dd>   <p>  - Delete &lt;ref&gt; after verifying it exists with &lt;oldvalue&gt;, if  - given. If given, &lt;oldvalue&gt; may not be zero.  + Delete &lt;ref&gt; after verifying it exists with &lt;old-oid&gt;, if  + given. If given, &lt;old-oid&gt; may not be zero.   </p>   </dd>   <dt class="hdlist1">  @@ -872,8 +872,8 @@  </dt>   <dd>   <p>  - Verify &lt;ref&gt; against &lt;oldvalue&gt; but do not change it. If  - &lt;oldvalue&gt; is zero or missing, the ref must not exist.  + Verify &lt;ref&gt; against &lt;old-oid&gt; but do not change it. If  + &lt;old-oid&gt; is zero or missing, the ref must not exist.   </p>   </dd>   <dt class="hdlist1">  @@ -926,7 +926,7 @@  </p>   </dd>   </dl></div>  -<div class="paragraph"><p>If all &lt;ref&gt;s can be locked with matching &lt;oldvalue&gt;s  +<div class="paragraph"><p>If all &lt;ref&gt;s can be locked with matching &lt;old-oid&gt;s   simultaneously, all modifications are performed. Otherwise, no   modifications are performed. Note that while each individual   &lt;ref&gt; is updated or deleted atomically, a concurrent reader may  @@ -949,7 +949,7 @@  </div></div>   <div class="paragraph"><p>Where "oldsha1" is the 40 character hexadecimal value previously   stored in &lt;ref&gt;, "newsha1" is the 40 character hexadecimal value of  -&lt;newvalue&gt; and "committer" is the committer&#8217;s name, email address  +&lt;new-oid&gt; and "committer" is the committer&#8217;s name, email address   and date in the standard Git committer ident format.</p></div>   <div class="paragraph"><p>Optionally with -m:</p></div>   <div class="literalblock">  @@ -974,7 +974,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2023-10-23 14:43:46 PDT  + 2024-04-10 12:46:30 PDT   </div>   </div>   </body>  
diff --git a/git-update-ref.txt b/git-update-ref.txt index 0561808..374a2eb 100644 --- a/git-update-ref.txt +++ b/git-update-ref.txt 
@@ -8,21 +8,21 @@  SYNOPSIS  --------  [verse] -'git update-ref' [-m <reason>] [--no-deref] (-d <ref> [<oldvalue>] | [--create-reflog] <ref> <newvalue> [<oldvalue>] | --stdin [-z]) +'git update-ref' [-m <reason>] [--no-deref] (-d <ref> [<old-oid>] | [--create-reflog] <ref> <new-oid> [<old-oid>] | --stdin [-z])    DESCRIPTION  ----------- -Given two arguments, stores the <newvalue> in the <ref>, possibly +Given two arguments, stores the <new-oid> in the <ref>, possibly  dereferencing the symbolic refs. E.g. `git update-ref HEAD -<newvalue>` updates the current branch head to the new object. +<new-oid>` updates the current branch head to the new object.   -Given three arguments, stores the <newvalue> in the <ref>, +Given three arguments, stores the <new-oid> in the <ref>,  possibly dereferencing the symbolic refs, after verifying that -the current value of the <ref> matches <oldvalue>. -E.g. `git update-ref refs/heads/master <newvalue> <oldvalue>` -updates the master branch head to <newvalue> only if its current -value is <oldvalue>. You can specify 40 "0" or an empty string -as <oldvalue> to make sure that the ref you are creating does +the current value of the <ref> matches <old-oid>. +E.g. `git update-ref refs/heads/master <new-oid> <old-oid>` +updates the master branch head to <new-oid> only if its current +value is <old-oid>. You can specify 40 "0" or an empty string +as <old-oid> to make sure that the ref you are creating does  not exist.    It also allows a "ref" file to be a symbolic pointer to another @@ -56,15 +56,15 @@  archive by creating a symlink tree).    With `-d` flag, it deletes the named <ref> after verifying it -still contains <oldvalue>. +still contains <old-oid>.    With `--stdin`, update-ref reads instructions from standard input and  performs all modifications together. Specify commands of the form:   -	update SP <ref> SP <newvalue> [SP <oldvalue>] LF -	create SP <ref> SP <newvalue> LF -	delete SP <ref> [SP <oldvalue>] LF -	verify SP <ref> [SP <oldvalue>] LF +	update SP <ref> SP <new-oid> [SP <old-oid>] LF +	create SP <ref> SP <new-oid> LF +	delete SP <ref> [SP <old-oid>] LF +	verify SP <ref> [SP <old-oid>] LF 	option SP <opt> LF 	start LF 	prepare LF @@ -82,10 +82,10 @@  Alternatively, use `-z` to specify in NUL-terminated format, without  quoting:   -	update SP <ref> NUL <newvalue> NUL [<oldvalue>] NUL -	create SP <ref> NUL <newvalue> NUL -	delete SP <ref> NUL [<oldvalue>] NUL -	verify SP <ref> NUL [<oldvalue>] NUL +	update SP <ref> NUL <new-oid> NUL [<old-oid>] NUL +	create SP <ref> NUL <new-oid> NUL +	delete SP <ref> NUL [<old-oid>] NUL +	verify SP <ref> NUL [<old-oid>] NUL 	option SP <opt> NUL 	start NUL 	prepare NUL @@ -100,22 +100,22 @@  repeated <ref> produce an error. Command meanings are:    update:: -	Set <ref> to <newvalue> after verifying <oldvalue>, if given. -	Specify a zero <newvalue> to ensure the ref does not exist -	after the update and/or a zero <oldvalue> to make sure the +	Set <ref> to <new-oid> after verifying <old-oid>, if given. +	Specify a zero <new-oid> to ensure the ref does not exist +	after the update and/or a zero <old-oid> to make sure the 	ref does not exist before the update.    create:: -	Create <ref> with <newvalue> after verifying it does not -	exist. The given <newvalue> may not be zero. +	Create <ref> with <new-oid> after verifying it does not +	exist. The given <new-oid> may not be zero.    delete:: -	Delete <ref> after verifying it exists with <oldvalue>, if -	given. If given, <oldvalue> may not be zero. +	Delete <ref> after verifying it exists with <old-oid>, if +	given. If given, <old-oid> may not be zero.    verify:: -	Verify <ref> against <oldvalue> but do not change it. If -	<oldvalue> is zero or missing, the ref must not exist. +	Verify <ref> against <old-oid> but do not change it. If +	<old-oid> is zero or missing, the ref must not exist.    option:: 	Modify the behavior of the next command naming a <ref>. @@ -141,7 +141,7 @@ 	Abort the transaction, releasing all locks if the transaction is in 	prepared state.   -If all <ref>s can be locked with matching <oldvalue>s +If all <ref>s can be locked with matching <old-oid>s  simultaneously, all modifications are performed. Otherwise, no  modifications are performed. Note that while each individual  <ref> is updated or deleted atomically, a concurrent reader may @@ -161,7 +161,7 @@    Where "oldsha1" is the 40 character hexadecimal value previously  stored in <ref>, "newsha1" is the 40 character hexadecimal value of -<newvalue> and "committer" is the committer's name, email address +<new-oid> and "committer" is the committer's name, email address  and date in the standard Git committer ident format.    Optionally with -m: 
diff --git a/githooks.html b/githooks.html index b322d8d..8fe90a7 100644 --- a/githooks.html +++ b/githooks.html 
@@ -975,12 +975,12 @@  input a line of the format:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>&lt;old-value&gt; SP &lt;new-value&gt; SP &lt;ref-name&gt; LF</code></pre>  +<pre><code>&lt;old-oid&gt; SP &lt;new-oid&gt; SP &lt;ref-name&gt; LF</code></pre>   </div></div>  -<div class="paragraph"><p>where <code>&lt;old-value&gt;</code> is the old object name stored in the ref,  -<code>&lt;new-value&gt;</code> is the new object name to be stored in the ref and  +<div class="paragraph"><p>where <code>&lt;old-oid&gt;</code> is the old object name stored in the ref,  +<code>&lt;new-oid&gt;</code> is the new object name to be stored in the ref and   <code>&lt;ref-name&gt;</code> is the full name of the ref.  -When creating a new ref, <code>&lt;old-value&gt;</code> is the all-zeroes object name.</p></div>  +When creating a new ref, <code>&lt;old-oid&gt;</code> is the all-zeroes object name.</p></div>   <div class="paragraph"><p>If the hook exits with non-zero status, none of the refs will be   updated. If the hook exits with zero, updating of individual refs can   still be prevented by the <a href="#update"><em>update</em></a> hook.</p></div>  @@ -1198,13 +1198,13 @@  receives on standard input a line of the format:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>&lt;old-value&gt; SP &lt;new-value&gt; SP &lt;ref-name&gt; LF</code></pre>  +<pre><code>&lt;old-oid&gt; SP &lt;new-oid&gt; SP &lt;ref-name&gt; LF</code></pre>   </div></div>  -<div class="paragraph"><p>where <code>&lt;old-value&gt;</code> is the old object name passed into the reference  -transaction, <code>&lt;new-value&gt;</code> is the new object name to be stored in the  +<div class="paragraph"><p>where <code>&lt;old-oid&gt;</code> is the old object name passed into the reference  +transaction, <code>&lt;new-oid&gt;</code> is the new object name to be stored in the   ref and <code>&lt;ref-name&gt;</code> is the full name of the ref. When force updating   the reference regardless of its current value or when the reference is  -to be created anew, <code>&lt;old-value&gt;</code> is the all-zeroes object name. To  +to be created anew, <code>&lt;old-oid&gt;</code> is the all-zeroes object name. To   distinguish these cases, you can inspect the current value of   <code>&lt;ref-name&gt;</code> via <code>git rev-parse</code>.</p></div>   <div class="paragraph"><p>The exit status of the hook is ignored for any state except for the  @@ -1442,7 +1442,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-02-08 15:45:59 PST  + 2024-04-10 12:46:30 PDT   </div>   </div>   </body>  
diff --git a/githooks.txt b/githooks.txt index 37f91d5..ee9b92c 100644 --- a/githooks.txt +++ b/githooks.txt 
@@ -275,12 +275,12 @@  arguments, but for each ref to be updated it receives on standard  input a line of the format:   - <old-value> SP <new-value> SP <ref-name> LF + <old-oid> SP <new-oid> SP <ref-name> LF   -where `<old-value>` is the old object name stored in the ref, -`<new-value>` is the new object name to be stored in the ref and +where `<old-oid>` is the old object name stored in the ref, +`<new-oid>` is the new object name to be stored in the ref and  `<ref-name>` is the full name of the ref. -When creating a new ref, `<old-value>` is the all-zeroes object name. +When creating a new ref, `<old-oid>` is the all-zeroes object name.    If the hook exits with non-zero status, none of the refs will be  updated. If the hook exits with zero, updating of individual refs can @@ -503,13 +503,13 @@  For each reference update that was added to the transaction, the hook  receives on standard input a line of the format:   - <old-value> SP <new-value> SP <ref-name> LF + <old-oid> SP <new-oid> SP <ref-name> LF   -where `<old-value>` is the old object name passed into the reference -transaction, `<new-value>` is the new object name to be stored in the +where `<old-oid>` is the old object name passed into the reference +transaction, `<new-oid>` is the new object name to be stored in the  ref and `<ref-name>` is the full name of the ref. When force updating  the reference regardless of its current value or when the reference is -to be created anew, `<old-value>` is the all-zeroes object name. To +to be created anew, `<old-oid>` is the all-zeroes object name. To  distinguish these cases, you can inspect the current value of  `<ref-name>` via `git rev-parse`.   
diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html index 00dee46..af85cf6 100644 --- a/howto/coordinate-embargoed-releases.html +++ b/howto/coordinate-embargoed-releases.html 
@@ -1038,7 +1038,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:39 PDT  + 2024-04-10 12:46:51 PDT   </div>   </div>   </body>  
diff --git a/howto/keep-canonical-history-correct.html b/howto/keep-canonical-history-correct.html index 7e72e56..f3a597d 100644 --- a/howto/keep-canonical-history-correct.html +++ b/howto/keep-canonical-history-correct.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Keep authoritative canonical history correct with git pull</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -939,7 +939,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:39 PDT  + 2024-04-10 12:46:51 PDT   </div>   </div>   </body>  
diff --git a/howto/maintain-git.html b/howto/maintain-git.html index 6625c2b..0237850 100644 --- a/howto/maintain-git.html +++ b/howto/maintain-git.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to maintain Git</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div class="sect1">  @@ -1479,7 +1479,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:39 PDT  + 2024-04-10 12:46:51 PDT   </div>   </div>   </body>  
diff --git a/howto/new-command.html b/howto/new-command.html index 0e1e1fc..bad7474 100644 --- a/howto/new-command.html +++ b/howto/new-command.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to integrate new subcommands</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -864,7 +864,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:37 PDT  + 2024-04-10 12:46:50 PDT   </div>   </div>   </body>  
diff --git a/howto/rebase-from-internal-branch.html b/howto/rebase-from-internal-branch.html index f8cdeba..9a4a789 100644 --- a/howto/rebase-from-internal-branch.html +++ b/howto/rebase-from-internal-branch.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to rebase from an internal branch</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -896,7 +896,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:39 PDT  + 2024-04-10 12:46:51 PDT   </div>   </div>   </body>  
diff --git a/howto/rebuild-from-update-hook.html b/howto/rebuild-from-update-hook.html index 6caac94..2c29103 100644 --- a/howto/rebuild-from-update-hook.html +++ b/howto/rebuild-from-update-hook.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to rebuild from update hook</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -848,7 +848,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:39 PDT  + 2024-04-10 12:46:51 PDT   </div>   </div>   </body>  
diff --git a/howto/recover-corrupted-blob-object.html b/howto/recover-corrupted-blob-object.html index 33d5e6e..caac2c7 100644 --- a/howto/recover-corrupted-blob-object.html +++ b/howto/recover-corrupted-blob-object.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to recover a corrupted blob object</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -881,7 +881,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:39 PDT  + 2024-04-10 12:46:51 PDT   </div>   </div>   </body>  
diff --git a/howto/recover-corrupted-object-harder.html b/howto/recover-corrupted-object-harder.html index 98b8406..20e53b8 100644 --- a/howto/recover-corrupted-object-harder.html +++ b/howto/recover-corrupted-object-harder.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to recover an object from scratch</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -1190,7 +1190,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:39 PDT  + 2024-04-10 12:46:51 PDT   </div>   </div>   </body>  
diff --git a/howto/revert-a-faulty-merge.html b/howto/revert-a-faulty-merge.html index 303bf26..1db5058 100644 --- a/howto/revert-a-faulty-merge.html +++ b/howto/revert-a-faulty-merge.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to revert a faulty merge</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -1026,7 +1026,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:38 PDT  + 2024-04-10 12:46:51 PDT   </div>   </div>   </body>  
diff --git a/howto/revert-branch-rebase.html b/howto/revert-branch-rebase.html index bce06e4..33b62d1 100644 --- a/howto/revert-branch-rebase.html +++ b/howto/revert-branch-rebase.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to revert an existing commit</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -908,7 +908,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:37 PDT  + 2024-04-10 12:46:50 PDT   </div>   </div>   </body>  
diff --git a/howto/separating-topic-branches.html b/howto/separating-topic-branches.html index 57db206..8b112eb 100644 --- a/howto/separating-topic-branches.html +++ b/howto/separating-topic-branches.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to separate topic branches</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -842,7 +842,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:38 PDT  + 2024-04-10 12:46:51 PDT   </div>   </div>   </body>  
diff --git a/howto/setup-git-server-over-http.html b/howto/setup-git-server-over-http.html index 66a4883..398e54a 100644 --- a/howto/setup-git-server-over-http.html +++ b/howto/setup-git-server-over-http.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to setup Git server over http</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -1072,7 +1072,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:38 PDT  + 2024-04-10 12:46:51 PDT   </div>   </div>   </body>  
diff --git a/howto/update-hook-example.html b/howto/update-hook-example.html index a00c78e..b2f4165 100644 --- a/howto/update-hook-example.html +++ b/howto/update-hook-example.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to use the update hook</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -931,7 +931,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:38 PDT  + 2024-04-10 12:46:51 PDT   </div>   </div>   </body>  
diff --git a/howto/use-git-daemon.html b/howto/use-git-daemon.html index 5b0502c..75f2a7f 100644 --- a/howto/use-git-daemon.html +++ b/howto/use-git-daemon.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to use git-daemon</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -792,7 +792,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:38 PDT  + 2024-04-10 12:46:51 PDT   </div>   </div>   </body>  
diff --git a/howto/using-merge-subtree.html b/howto/using-merge-subtree.html index 09684bf..f18f73b 100644 --- a/howto/using-merge-subtree.html +++ b/howto/using-merge-subtree.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to use the subtree merge strategy</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -849,7 +849,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:37 PDT  + 2024-04-10 12:46:50 PDT   </div>   </div>   </body>  
diff --git a/howto/using-signed-tag-in-pull-request.html b/howto/using-signed-tag-in-pull-request.html index cdc76c2..5c34165 100644 --- a/howto/using-signed-tag-in-pull-request.html +++ b/howto/using-signed-tag-in-pull-request.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>How to use a signed tag in pull requests</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  @@ -953,7 +953,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2024-04-09 14:45:37 PDT  + 2024-04-10 12:46:50 PDT   </div>   </div>   </body>  
diff --git a/technical/api-error-handling.html b/technical/api-error-handling.html index aa6dac1..99486c0 100644 --- a/technical/api-error-handling.html +++ b/technical/api-error-handling.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Error reporting in git</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/api-index.html b/technical/api-index.html index c294959..e971e9f 100644 --- a/technical/api-index.html +++ b/technical/api-index.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Git API Documents</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/api-merge.html b/technical/api-merge.html index ecc7d6a..6fe7f44 100644 --- a/technical/api-merge.html +++ b/technical/api-merge.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>merge API</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/api-parse-options.html b/technical/api-parse-options.html index e2afd74..e078a98 100644 --- a/technical/api-parse-options.html +++ b/technical/api-parse-options.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>parse-options API</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/api-simple-ipc.html b/technical/api-simple-ipc.html index 97e1990..72b56af 100644 --- a/technical/api-simple-ipc.html +++ b/technical/api-simple-ipc.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Simple-IPC API</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/api-trace2.html b/technical/api-trace2.html index d76350c..a552cff 100644 --- a/technical/api-trace2.html +++ b/technical/api-trace2.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Trace2 API</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/bitmap-format.html b/technical/bitmap-format.html index 1b37da1..f80963c 100644 --- a/technical/bitmap-format.html +++ b/technical/bitmap-format.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>GIT bitmap v1 format</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div class="sect1">  
diff --git a/technical/bundle-uri.html b/technical/bundle-uri.html index f970b7a..44cf4bc 100644 --- a/technical/bundle-uri.html +++ b/technical/bundle-uri.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Bundle URIs</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/hash-function-transition.html b/technical/hash-function-transition.html index e917450..7591f0c 100644 --- a/technical/hash-function-transition.html +++ b/technical/hash-function-transition.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Git hash function transition</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div class="sect1">  
diff --git a/technical/long-running-process-protocol.html b/technical/long-running-process-protocol.html index 1e53d32..8ae7ed0 100644 --- a/technical/long-running-process-protocol.html +++ b/technical/long-running-process-protocol.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Long-running process protocol</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/multi-pack-index.html b/technical/multi-pack-index.html index 3f6bf4c..d63157a 100644 --- a/technical/multi-pack-index.html +++ b/technical/multi-pack-index.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Multi-Pack-Index (MIDX) Design Notes</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/pack-heuristics.html b/technical/pack-heuristics.html index c99bdc5..a64e644 100644 --- a/technical/pack-heuristics.html +++ b/technical/pack-heuristics.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Concerning Git&#8217;s Packing Heuristics</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/parallel-checkout.html b/technical/parallel-checkout.html index f2b4770..0fb1302 100644 --- a/technical/parallel-checkout.html +++ b/technical/parallel-checkout.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Parallel Checkout Design Notes</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/partial-clone.html b/technical/partial-clone.html index d5872b5..314fc96 100644 --- a/technical/partial-clone.html +++ b/technical/partial-clone.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Partial Clone Design Notes</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/racy-git.html b/technical/racy-git.html index 4c43b98..2455429 100644 --- a/technical/racy-git.html +++ b/technical/racy-git.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Use of index and Racy Git problem</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div class="sect1">  
diff --git a/technical/scalar.html b/technical/scalar.html index 99169de..a2f852d 100644 --- a/technical/scalar.html +++ b/technical/scalar.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Scalar</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/send-pack-pipeline.html b/technical/send-pack-pipeline.html index 0095288..12dc4e6 100644 --- a/technical/send-pack-pipeline.html +++ b/technical/send-pack-pipeline.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Git-send-pack internals</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div class="sect1">  
diff --git a/technical/shallow.html b/technical/shallow.html index ddc8952..33a0e08 100644 --- a/technical/shallow.html +++ b/technical/shallow.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Shallow commits</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/trivial-merge.html b/technical/trivial-merge.html index e63d9a5..e9aa32b 100644 --- a/technical/trivial-merge.html +++ b/technical/trivial-merge.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Trivial merge rules</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/technical/unit-tests.html b/technical/unit-tests.html index 6b9914d..633a284 100644 --- a/technical/unit-tests.html +++ b/technical/unit-tests.html 
@@ -735,7 +735,7 @@  <body class="article">   <div id="header">   <h1>Unit Testing</h1>  -<span id="revdate">2024-04-09</span>  +<span id="revdate">2024-04-10</span>   </div>   <div id="content">   <div id="preamble">  
diff --git a/user-manual.html b/user-manual.html index 819e3f3..66fec71 100644 --- a/user-manual.html +++ b/user-manual.html 
@@ -1,5 +1,5 @@  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Git User Manual</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div lang="en" class="book"><div class="titlepage"><div><div><h1 class="title"><a name="id-1"></a>Git User Manual</h1></div><div><div class="revhistory"><table style="border-style:solid; width:100%;" summary="Revision History"><tr><th align="left" valign="top" colspan="2"><b>Revision History</b></th></tr><tr><td align="left"></td><td align="left">2024-04-09</td></tr></table></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="preface"><a href="#_introduction">Introduction</a></span></dt><dt><span class="chapter"><a href="#repositories-and-branches">1. Repositories and Branches</a></span></dt><dd><dl><dt><span class="section"><a href="#how-to-get-a-git-repository">How to get a Git repository</a></span></dt><dt><span class="section"><a href="#how-to-check-out">How to check out a different version of a project</a></span></dt><dt><span class="section"><a href="#understanding-commits">Understanding History: Commits</a></span></dt><dd><dl><dt><span class="section"><a href="#understanding-reachability">Understanding history: commits, parents, and reachability</a></span></dt><dt><span class="section"><a href="#history-diagrams">Understanding history: History diagrams</a></span></dt><dt><span class="section"><a href="#what-is-a-branch">Understanding history: What is a branch?</a></span></dt></dl></dd><dt><span class="section"><a href="#manipulating-branches">Manipulating branches</a></span></dt><dt><span class="section"><a href="#detached-head">Examining an old version without creating a new branch</a></span></dt><dt><span class="section"><a href="#examining-remote-branches">Examining branches from a remote repository</a></span></dt><dt><span class="section"><a href="#how-git-stores-references">Naming branches, tags, and other references</a></span></dt><dt><span class="section"><a href="#Updating-a-repository-With-git-fetch">Updating a repository with git fetch</a></span></dt><dt><span class="section"><a href="#fetching-branches">Fetching branches from other repositories</a></span></dt></dl></dd><dt><span class="chapter"><a href="#exploring-git-history">2. Exploring Git history</a></span></dt><dd><dl><dt><span class="section"><a href="#using-bisect">How to use bisect to find a regression</a></span></dt><dt><span class="section"><a href="#naming-commits">Naming commits</a></span></dt><dt><span class="section"><a href="#creating-tags">Creating tags</a></span></dt><dt><span class="section"><a href="#browsing-revisions">Browsing revisions</a></span></dt><dt><span class="section"><a href="#generating-diffs">Generating diffs</a></span></dt><dt><span class="section"><a href="#viewing-old-file-versions">Viewing old file versions</a></span></dt><dt><span class="section"><a href="#history-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#counting-commits-on-a-branch">Counting the number of commits on a branch</a></span></dt><dt><span class="section"><a href="#checking-for-equal-branches">Check whether two branches point at the same history</a></span></dt><dt><span class="section"><a href="#finding-tagged-descendants">Find first tagged version including a given fix</a></span></dt><dt><span class="section"><a href="#showing-commits-unique-to-a-branch">Showing commits unique to a given branch</a></span></dt><dt><span class="section"><a href="#making-a-release">Creating a changelog and tarball for a software release</a></span></dt><dt><span class="section"><a href="#Finding-commits-With-given-Content">Finding commits referencing a file with given content</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Developing-With-git">3. Developing with Git</a></span></dt><dd><dl><dt><span class="section"><a href="#telling-git-your-name">Telling Git your name</a></span></dt><dt><span class="section"><a href="#creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#how-to-make-a-commit">How to make a commit</a></span></dt><dt><span class="section"><a href="#creating-good-commit-messages">Creating good commit messages</a></span></dt><dt><span class="section"><a href="#ignoring-files">Ignoring files</a></span></dt><dt><span class="section"><a href="#how-to-merge">How to merge</a></span></dt><dt><span class="section"><a href="#resolving-a-merge">Resolving a merge</a></span></dt><dd><dl><dt><span class="section"><a href="#conflict-resolution">Getting conflict-resolution help during a merge</a></span></dt></dl></dd><dt><span class="section"><a href="#undoing-a-merge">Undoing a merge</a></span></dt><dt><span class="section"><a href="#fast-forwards">Fast-forward merges</a></span></dt><dt><span class="section"><a href="#fixing-mistakes">Fixing mistakes</a></span></dt><dd><dl><dt><span class="section"><a href="#reverting-a-commit">Fixing a mistake with a new commit</a></span></dt><dt><span class="section"><a href="#fixing-a-mistake-by-rewriting-history">Fixing a mistake by rewriting history</a></span></dt><dt><span class="section"><a href="#checkout-of-path">Checking out an old version of a file</a></span></dt><dt><span class="section"><a href="#interrupted-work">Temporarily setting aside work in progress</a></span></dt></dl></dd><dt><span class="section"><a href="#ensuring-good-performance">Ensuring good performance</a></span></dt><dt><span class="section"><a href="#ensuring-reliability">Ensuring reliability</a></span></dt><dd><dl><dt><span class="section"><a href="#checking-for-corruption">Checking the repository for corruption</a></span></dt><dt><span class="section"><a href="#recovering-lost-changes">Recovering lost changes</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#sharing-development">4. Sharing development with others</a></span></dt><dd><dl><dt><span class="section"><a href="#getting-updates-With-git-pull">Getting updates with git pull</a></span></dt><dt><span class="section"><a href="#submitting-patches">Submitting patches to a project</a></span></dt><dt><span class="section"><a href="#importing-patches">Importing patches to a project</a></span></dt><dt><span class="section"><a href="#public-repositories">Public Git repositories</a></span></dt><dd><dl><dt><span class="section"><a href="#setting-up-a-public-repository">Setting up a public repository</a></span></dt><dt><span class="section"><a href="#exporting-via-git">Exporting a Git repository via the Git protocol</a></span></dt><dt><span class="section"><a href="#exporting-via-http">Exporting a git repository via HTTP</a></span></dt><dt><span class="section"><a href="#pushing-changes-to-a-public-repository">Pushing changes to a public repository</a></span></dt><dt><span class="section"><a href="#forcing-push">What to do when a push fails</a></span></dt><dt><span class="section"><a href="#setting-up-a-shared-repository">Setting up a shared repository</a></span></dt><dt><span class="section"><a href="#setting-up-gitweb">Allowing web browsing of a repository</a></span></dt></dl></dd><dt><span class="section"><a href="#how-to-get-a-git-repository-with-minimal-history">How to get a Git repository with minimal history</a></span></dt><dt><span class="section"><a href="#sharing-development-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#maintaining-topic-branches">Maintaining topic branches for a Linux subsystem maintainer</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#cleaning-up-history">5. Rewriting history and maintaining patch series</a></span></dt><dd><dl><dt><span class="section"><a href="#patch-series">Creating the perfect patch series</a></span></dt><dt><span class="section"><a href="#using-git-rebase">Keeping a patch series up to date using git rebase</a></span></dt><dt><span class="section"><a href="#rewriting-one-commit">Rewriting a single commit</a></span></dt><dt><span class="section"><a href="#reordering-patch-series">Reordering or selecting from a patch series</a></span></dt><dt><span class="section"><a href="#interactive-rebase">Using interactive rebases</a></span></dt><dt><span class="section"><a href="#patch-series-tools">Other tools</a></span></dt><dt><span class="section"><a href="#problems-With-rewriting-history">Problems with rewriting history</a></span></dt><dt><span class="section"><a href="#bisect-merges">Why bisecting merge commits can be harder than bisecting linear history</a></span></dt></dl></dd><dt><span class="chapter"><a href="#advanced-branch-management">6. Advanced branch management</a></span></dt><dd><dl><dt><span class="section"><a href="#fetching-individual-branches">Fetching individual branches</a></span></dt><dt><span class="section"><a href="#fetch-fast-forwards">git fetch and fast-forwards</a></span></dt><dt><span class="section"><a href="#forcing-fetch">Forcing git fetch to do non-fast-forward updates</a></span></dt><dt><span class="section"><a href="#remote-branch-configuration">Configuring remote-tracking branches</a></span></dt></dl></dd><dt><span class="chapter"><a href="#git-concepts">7. Git concepts</a></span></dt><dd><dl><dt><span class="section"><a href="#the-object-database">The Object Database</a></span></dt><dd><dl><dt><span class="section"><a href="#commit-object">Commit Object</a></span></dt><dt><span class="section"><a href="#tree-object">Tree Object</a></span></dt><dt><span class="section"><a href="#blob-object">Blob Object</a></span></dt><dt><span class="section"><a href="#trust">Trust</a></span></dt><dt><span class="section"><a href="#tag-object">Tag Object</a></span></dt><dt><span class="section"><a href="#pack-files">How Git stores objects efficiently: pack files</a></span></dt><dt><span class="section"><a href="#dangling-objects">Dangling objects</a></span></dt><dt><span class="section"><a href="#recovering-from-repository-corruption">Recovering from repository corruption</a></span></dt></dl></dd><dt><span class="section"><a href="#the-index">The index</a></span></dt></dl></dd><dt><span class="chapter"><a href="#submodules">8. Submodules</a></span></dt><dd><dl><dt><span class="section"><a href="#pitfalls-with-submodules">Pitfalls with submodules</a></span></dt></dl></dd><dt><span class="chapter"><a href="#low-level-operations">9. Low-level Git operations</a></span></dt><dd><dl><dt><span class="section"><a href="#object-manipulation">Object access and manipulation</a></span></dt><dt><span class="section"><a href="#the-workflow">The Workflow</a></span></dt><dd><dl><dt><span class="section"><a href="#working-directory-to-index">working directory → index</a></span></dt><dt><span class="section"><a href="#index-to-object-database">index → object database</a></span></dt><dt><span class="section"><a href="#object-database-to-index">object database → index</a></span></dt><dt><span class="section"><a href="#index-to-working-directory">index → working directory</a></span></dt><dt><span class="section"><a href="#tying-it-all-together">Tying it all together</a></span></dt></dl></dd><dt><span class="section"><a href="#examining-the-data">Examining the data</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees">Merging multiple trees</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees-2">Merging multiple trees, continued</a></span></dt></dl></dd><dt><span class="chapter"><a href="#hacking-git">10. Hacking Git</a></span></dt><dd><dl><dt><span class="section"><a href="#object-details">Object storage format</a></span></dt><dt><span class="section"><a href="#birdview-on-the-source-code">A birds-eye view of Git’s source code</a></span></dt></dl></dd><dt><span class="chapter"><a href="#glossary">11. Git Glossary</a></span></dt><dd><dl><dt><span class="section"><a href="#git-explained">Git explained</a></span></dt></dl></dd><dt><span class="appendix"><a href="#git-quick-start">A. Git Quick Reference</a></span></dt><dd><dl><dt><span class="section"><a href="#quick-creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#managing-branches">Managing branches</a></span></dt><dt><span class="section"><a href="#exploring-history">Exploring history</a></span></dt><dt><span class="section"><a href="#making-changes">Making changes</a></span></dt><dt><span class="section"><a href="#merging">Merging</a></span></dt><dt><span class="section"><a href="#sharing-your-changes">Sharing your changes</a></span></dt><dt><span class="section"><a href="#repository-maintenance">Repository maintenance</a></span></dt></dl></dd><dt><span class="appendix"><a href="#todo">B. Notes and todo list for this manual</a></span></dt><dd><dl><dt><span class="section"><a href="#todo-list">Todo list</a></span></dt></dl></dd></dl></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a name="_introduction"></a>Introduction</h1></div></div></div><p>Git is a fast distributed revision control system.</p><p>This manual is designed to be readable by someone with basic UNIX +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Git User Manual</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div lang="en" class="book"><div class="titlepage"><div><div><h1 class="title"><a name="id-1"></a>Git User Manual</h1></div><div><div class="revhistory"><table style="border-style:solid; width:100%;" summary="Revision History"><tr><th align="left" valign="top" colspan="2"><b>Revision History</b></th></tr><tr><td align="left"></td><td align="left">2024-04-10</td></tr></table></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="preface"><a href="#_introduction">Introduction</a></span></dt><dt><span class="chapter"><a href="#repositories-and-branches">1. Repositories and Branches</a></span></dt><dd><dl><dt><span class="section"><a href="#how-to-get-a-git-repository">How to get a Git repository</a></span></dt><dt><span class="section"><a href="#how-to-check-out">How to check out a different version of a project</a></span></dt><dt><span class="section"><a href="#understanding-commits">Understanding History: Commits</a></span></dt><dd><dl><dt><span class="section"><a href="#understanding-reachability">Understanding history: commits, parents, and reachability</a></span></dt><dt><span class="section"><a href="#history-diagrams">Understanding history: History diagrams</a></span></dt><dt><span class="section"><a href="#what-is-a-branch">Understanding history: What is a branch?</a></span></dt></dl></dd><dt><span class="section"><a href="#manipulating-branches">Manipulating branches</a></span></dt><dt><span class="section"><a href="#detached-head">Examining an old version without creating a new branch</a></span></dt><dt><span class="section"><a href="#examining-remote-branches">Examining branches from a remote repository</a></span></dt><dt><span class="section"><a href="#how-git-stores-references">Naming branches, tags, and other references</a></span></dt><dt><span class="section"><a href="#Updating-a-repository-With-git-fetch">Updating a repository with git fetch</a></span></dt><dt><span class="section"><a href="#fetching-branches">Fetching branches from other repositories</a></span></dt></dl></dd><dt><span class="chapter"><a href="#exploring-git-history">2. Exploring Git history</a></span></dt><dd><dl><dt><span class="section"><a href="#using-bisect">How to use bisect to find a regression</a></span></dt><dt><span class="section"><a href="#naming-commits">Naming commits</a></span></dt><dt><span class="section"><a href="#creating-tags">Creating tags</a></span></dt><dt><span class="section"><a href="#browsing-revisions">Browsing revisions</a></span></dt><dt><span class="section"><a href="#generating-diffs">Generating diffs</a></span></dt><dt><span class="section"><a href="#viewing-old-file-versions">Viewing old file versions</a></span></dt><dt><span class="section"><a href="#history-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#counting-commits-on-a-branch">Counting the number of commits on a branch</a></span></dt><dt><span class="section"><a href="#checking-for-equal-branches">Check whether two branches point at the same history</a></span></dt><dt><span class="section"><a href="#finding-tagged-descendants">Find first tagged version including a given fix</a></span></dt><dt><span class="section"><a href="#showing-commits-unique-to-a-branch">Showing commits unique to a given branch</a></span></dt><dt><span class="section"><a href="#making-a-release">Creating a changelog and tarball for a software release</a></span></dt><dt><span class="section"><a href="#Finding-commits-With-given-Content">Finding commits referencing a file with given content</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Developing-With-git">3. Developing with Git</a></span></dt><dd><dl><dt><span class="section"><a href="#telling-git-your-name">Telling Git your name</a></span></dt><dt><span class="section"><a href="#creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#how-to-make-a-commit">How to make a commit</a></span></dt><dt><span class="section"><a href="#creating-good-commit-messages">Creating good commit messages</a></span></dt><dt><span class="section"><a href="#ignoring-files">Ignoring files</a></span></dt><dt><span class="section"><a href="#how-to-merge">How to merge</a></span></dt><dt><span class="section"><a href="#resolving-a-merge">Resolving a merge</a></span></dt><dd><dl><dt><span class="section"><a href="#conflict-resolution">Getting conflict-resolution help during a merge</a></span></dt></dl></dd><dt><span class="section"><a href="#undoing-a-merge">Undoing a merge</a></span></dt><dt><span class="section"><a href="#fast-forwards">Fast-forward merges</a></span></dt><dt><span class="section"><a href="#fixing-mistakes">Fixing mistakes</a></span></dt><dd><dl><dt><span class="section"><a href="#reverting-a-commit">Fixing a mistake with a new commit</a></span></dt><dt><span class="section"><a href="#fixing-a-mistake-by-rewriting-history">Fixing a mistake by rewriting history</a></span></dt><dt><span class="section"><a href="#checkout-of-path">Checking out an old version of a file</a></span></dt><dt><span class="section"><a href="#interrupted-work">Temporarily setting aside work in progress</a></span></dt></dl></dd><dt><span class="section"><a href="#ensuring-good-performance">Ensuring good performance</a></span></dt><dt><span class="section"><a href="#ensuring-reliability">Ensuring reliability</a></span></dt><dd><dl><dt><span class="section"><a href="#checking-for-corruption">Checking the repository for corruption</a></span></dt><dt><span class="section"><a href="#recovering-lost-changes">Recovering lost changes</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#sharing-development">4. Sharing development with others</a></span></dt><dd><dl><dt><span class="section"><a href="#getting-updates-With-git-pull">Getting updates with git pull</a></span></dt><dt><span class="section"><a href="#submitting-patches">Submitting patches to a project</a></span></dt><dt><span class="section"><a href="#importing-patches">Importing patches to a project</a></span></dt><dt><span class="section"><a href="#public-repositories">Public Git repositories</a></span></dt><dd><dl><dt><span class="section"><a href="#setting-up-a-public-repository">Setting up a public repository</a></span></dt><dt><span class="section"><a href="#exporting-via-git">Exporting a Git repository via the Git protocol</a></span></dt><dt><span class="section"><a href="#exporting-via-http">Exporting a git repository via HTTP</a></span></dt><dt><span class="section"><a href="#pushing-changes-to-a-public-repository">Pushing changes to a public repository</a></span></dt><dt><span class="section"><a href="#forcing-push">What to do when a push fails</a></span></dt><dt><span class="section"><a href="#setting-up-a-shared-repository">Setting up a shared repository</a></span></dt><dt><span class="section"><a href="#setting-up-gitweb">Allowing web browsing of a repository</a></span></dt></dl></dd><dt><span class="section"><a href="#how-to-get-a-git-repository-with-minimal-history">How to get a Git repository with minimal history</a></span></dt><dt><span class="section"><a href="#sharing-development-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#maintaining-topic-branches">Maintaining topic branches for a Linux subsystem maintainer</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#cleaning-up-history">5. Rewriting history and maintaining patch series</a></span></dt><dd><dl><dt><span class="section"><a href="#patch-series">Creating the perfect patch series</a></span></dt><dt><span class="section"><a href="#using-git-rebase">Keeping a patch series up to date using git rebase</a></span></dt><dt><span class="section"><a href="#rewriting-one-commit">Rewriting a single commit</a></span></dt><dt><span class="section"><a href="#reordering-patch-series">Reordering or selecting from a patch series</a></span></dt><dt><span class="section"><a href="#interactive-rebase">Using interactive rebases</a></span></dt><dt><span class="section"><a href="#patch-series-tools">Other tools</a></span></dt><dt><span class="section"><a href="#problems-With-rewriting-history">Problems with rewriting history</a></span></dt><dt><span class="section"><a href="#bisect-merges">Why bisecting merge commits can be harder than bisecting linear history</a></span></dt></dl></dd><dt><span class="chapter"><a href="#advanced-branch-management">6. Advanced branch management</a></span></dt><dd><dl><dt><span class="section"><a href="#fetching-individual-branches">Fetching individual branches</a></span></dt><dt><span class="section"><a href="#fetch-fast-forwards">git fetch and fast-forwards</a></span></dt><dt><span class="section"><a href="#forcing-fetch">Forcing git fetch to do non-fast-forward updates</a></span></dt><dt><span class="section"><a href="#remote-branch-configuration">Configuring remote-tracking branches</a></span></dt></dl></dd><dt><span class="chapter"><a href="#git-concepts">7. Git concepts</a></span></dt><dd><dl><dt><span class="section"><a href="#the-object-database">The Object Database</a></span></dt><dd><dl><dt><span class="section"><a href="#commit-object">Commit Object</a></span></dt><dt><span class="section"><a href="#tree-object">Tree Object</a></span></dt><dt><span class="section"><a href="#blob-object">Blob Object</a></span></dt><dt><span class="section"><a href="#trust">Trust</a></span></dt><dt><span class="section"><a href="#tag-object">Tag Object</a></span></dt><dt><span class="section"><a href="#pack-files">How Git stores objects efficiently: pack files</a></span></dt><dt><span class="section"><a href="#dangling-objects">Dangling objects</a></span></dt><dt><span class="section"><a href="#recovering-from-repository-corruption">Recovering from repository corruption</a></span></dt></dl></dd><dt><span class="section"><a href="#the-index">The index</a></span></dt></dl></dd><dt><span class="chapter"><a href="#submodules">8. Submodules</a></span></dt><dd><dl><dt><span class="section"><a href="#pitfalls-with-submodules">Pitfalls with submodules</a></span></dt></dl></dd><dt><span class="chapter"><a href="#low-level-operations">9. Low-level Git operations</a></span></dt><dd><dl><dt><span class="section"><a href="#object-manipulation">Object access and manipulation</a></span></dt><dt><span class="section"><a href="#the-workflow">The Workflow</a></span></dt><dd><dl><dt><span class="section"><a href="#working-directory-to-index">working directory → index</a></span></dt><dt><span class="section"><a href="#index-to-object-database">index → object database</a></span></dt><dt><span class="section"><a href="#object-database-to-index">object database → index</a></span></dt><dt><span class="section"><a href="#index-to-working-directory">index → working directory</a></span></dt><dt><span class="section"><a href="#tying-it-all-together">Tying it all together</a></span></dt></dl></dd><dt><span class="section"><a href="#examining-the-data">Examining the data</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees">Merging multiple trees</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees-2">Merging multiple trees, continued</a></span></dt></dl></dd><dt><span class="chapter"><a href="#hacking-git">10. Hacking Git</a></span></dt><dd><dl><dt><span class="section"><a href="#object-details">Object storage format</a></span></dt><dt><span class="section"><a href="#birdview-on-the-source-code">A birds-eye view of Git’s source code</a></span></dt></dl></dd><dt><span class="chapter"><a href="#glossary">11. Git Glossary</a></span></dt><dd><dl><dt><span class="section"><a href="#git-explained">Git explained</a></span></dt></dl></dd><dt><span class="appendix"><a href="#git-quick-start">A. Git Quick Reference</a></span></dt><dd><dl><dt><span class="section"><a href="#quick-creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#managing-branches">Managing branches</a></span></dt><dt><span class="section"><a href="#exploring-history">Exploring history</a></span></dt><dt><span class="section"><a href="#making-changes">Making changes</a></span></dt><dt><span class="section"><a href="#merging">Merging</a></span></dt><dt><span class="section"><a href="#sharing-your-changes">Sharing your changes</a></span></dt><dt><span class="section"><a href="#repository-maintenance">Repository maintenance</a></span></dt></dl></dd><dt><span class="appendix"><a href="#todo">B. Notes and todo list for this manual</a></span></dt><dd><dl><dt><span class="section"><a href="#todo-list">Todo list</a></span></dt></dl></dd></dl></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a name="_introduction"></a>Introduction</h1></div></div></div><p>Git is a fast distributed revision control system.</p><p>This manual is designed to be readable by someone with basic UNIX  command-line skills, but no previous knowledge of Git.</p><p><a class="xref" href="#repositories-and-branches" title="Chapter 1. Repositories and Branches">Chapter 1, <i>Repositories and Branches</i></a> and <a class="xref" href="#exploring-git-history" title="Chapter 2. Exploring Git history">Chapter 2, <i>Exploring Git history</i></a> explain how  to fetch and study a project using git—read these chapters to learn how  to build and test a particular version of a software project, search for